home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / c / qtools0.2-src.lha / src / util / qcc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-13  |  2.2 KB  |  104 lines

  1. #define    LIBQTOOLS_CORE
  2. #define    LIBQBUILD_CORE
  3. #include <libqtools.h>
  4. #include <libqbuild.h>
  5. #include "../libqbuild/qcc.h"
  6.  
  7. extern char sourcedir[NAMELEN_PATH];                /* 256 */
  8. extern char destfile[NAMELEN_PATH];                /* 256 */
  9. extern bool pr_dumpasm;
  10.  
  11. extern bool InitData(void);
  12. extern void PR_BeginCompilation(void *memory, int memsize);
  13. extern bool PR_CompileFile(char *string, char *filename);
  14. extern bool PR_FinishCompilation(void);
  15. extern int PR_WriteProgdefs(char *filename);
  16. extern void WriteData(int crc);
  17. extern void WriteFiles(void);
  18.  
  19. extern char com_token[1024];
  20. extern bool com_eof;
  21.  
  22. extern char *COM_Parse(register char *data);
  23.  
  24. /*
  25.  * ============
  26.  * main
  27.  * ============
  28.  */
  29. #undef Error
  30. static void Error(char *error,...)
  31. {
  32.   va_list argptr;
  33.  
  34.   eprintf("************ ERROR ************\n");
  35.  
  36.   va_start(argptr, error);
  37.   vprintf(error, argptr);
  38.   va_end(argptr);
  39.   eprintf("\n");
  40.   exit(1);
  41. }
  42.  
  43. int main(int argc, char **argv)
  44. {
  45.   char *src;
  46.   char *src2;
  47.   char filename[1024];
  48.   int p, crc;
  49.  
  50.   /*
  51.    * p = CheckParm("-src");
  52.    * if (p && p < argc - 1) {
  53.    * strcpy(sourcedir, argv[p + 1]);
  54.    * strcat(sourcedir, "/");
  55.    * mprintf("Source directory: %s\n", sourcedir);
  56.    * }
  57.    * else
  58.    */
  59.   strcpy(sourcedir, "");
  60.  
  61.   InitData();
  62.  
  63.   sprintf(filename, "%sprogs.src", sourcedir);
  64.   if (!(src = (char *)GetVoid(filename)))
  65.     Error("cannot open %s\n", filename);
  66.  
  67.   src = COM_Parse(src);
  68.   if (!src)
  69.     Error("No destination filename.  qcc -help for info.\n");
  70.   strcpy(destfile, com_token);
  71.   mprintf("outputfile: %s\n", destfile);
  72.  
  73.   pr_dumpasm = FALSE;
  74.   PR_BeginCompilation((void *)kmalloc(0x100000), 0x100000);
  75.  
  76.   /* compile all the files */
  77.   do {
  78.     src = COM_Parse(src);
  79.     if (!src)
  80.       break;
  81.     sprintf(filename, "%s%s", sourcedir, com_token);
  82.     mprintf("compiling %s\n", filename);
  83.     if (!(src2 = (char *)GetVoid(filename)))
  84.       Error("cannot open %s\n", filename);
  85.  
  86.     if (!PR_CompileFile(src2, filename))
  87.       exit(1);
  88.   } while (1);
  89.  
  90.   if (!PR_FinishCompilation())
  91.     Error("compilation errors");
  92.  
  93.   /* write progdefs.h */
  94.   crc = PR_WriteProgdefs("progdefs.h");
  95.  
  96.   /* write data file */
  97.   WriteData(crc);
  98.  
  99.   /* write files.dat */
  100.   WriteFiles();
  101.  
  102.   return 0;
  103. }
  104.